[참조]
- 공학자를 위한 Python, 조정래, 2022: 2.2 제어문
https://wikidocs.net/14596 - Dookie Kim, Python: From Beginning to Application, 2022 [PDF]
목차
다른 프로그래밍 언어와 같이 파이썬에도 if, for, while 등의 제어문이 있으며, break, continue 의 키워드도 동일하다.
조건설정 다음에 콜론(:)을 찍어준다.
명령구문들은 들여쓰기를 한다.
(1) 조건문: if
- 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 사용한다.
- 파이썬에는 switch/case 문이 없으므로, if 문으로 작성한다.
Ex) if ... else ...
if a > 0:
print(a) # a가 0보다 큰 경우 a를 출력
else:
print(b) # a가 0보다 크지 않은 경우 b를 출력
Ex) if ... elif ... else ...
if x < 0:
print('negative')
# x가 0보다 작은 경우
# negative를 출력
elif x < 10:
print('0<=x<10')
# x가 0보다 크거나 같고 10보다 작은 경우
# 0 ≤ x < 10를 출력
else:
print('x>=10')
# x가 10보다 크거나 같은 경우
# x ≥ 10를 출력
- [Note] 삼항연산자(ternary operator)
간단한 조건문을 한 줄(3개의 항)로 표현할 수 있음
Ex) result = A if B else C
status = "성인" if age >= 18 else "미성년자"
# result = value_if_true if condition else value_if_false
3. 제어문: IF문
3.1 참조 설명
3.2 예제 문제
(2) 반복문: for, while
- 명령이 반복되는 경우에 사용한다.
-
1) for
2) while
1) for
- for문은 for [변수] in [문자열, 리스트, 튜플]: 부분을 통해 새로운 변수를 만든다.
Ex) range() 사용
for i in range(10):
print(i)
# range(10)은
# 0 ≤ i < 10인
# 0,1,2,3,4,5,6,7,8,9 숫자를 생성
결과)
0
1
2
3
4
5
6
7
8
9
Ex) list 데이터 타입의 사용
xdata = [0.1,4,3]
for x in xdata:
print(x)
결과)
0.1
4
3
Ex) 인덱스와 리스트 멤버 동시 접근 : enumerate(list) 사용
items = [9,5,4,10]
for idx, val in enumerate(items):
print(idx, val)
# enumerate(items)는
# (인덱스,객체)인
# [(0,9), (1,5), (2,4), (3,10)]를 생성
결과)
0 9
1 5
2 4
3 10
2) while
- while문은 while [조건문]: 부분을 통해 변수의 True/False 여부를 판단할 뿐, 새로운 변수를 만들 수 없다.
Ex) while (무한)반복문
while True:
key = input()
if key == 'x':
break
# x가 입력되면
# while 반복문을 깨고 나온다.
print(key)
6. 반복문
7. while
7.1 while
7.2 brake
8. for
8.1 for
8.2 range
(3) break, continue
-
1) break
2) continue
1) break
- break는 특정 조건일때 아예 반복문을 깨고 나오게 한다.
Ex) break
for val in "string":
if val == "i":
break
# s, t, r 까지 출력한 후,
# i가 되면
# for 반복문을 깨고 나온다.
print(val)
결과)
s
t
r
2) continue
- continue문은 어떤 조건일때 반복문 안에 명시된 구문을 건너뛴다.
Ex) continue
for val in "string":
if val == "i":
continue
# s, t, r 까지 출력한 후,
# i가 되면 반복문을 건너 뛰고,
# n, g를 출력
print(val)
결과)
s
t
r
n
g
(4) List Comprehension 리스트 내포함수
Comprehension이란 '이해'라기 보다는 '내포(內包, 내부 포함)'란 뜻을 갖는다.
파이썬의 강력하고 간결한 문법 기능
기존 리스트를 기반으로 특정 조건에 맞는 새로운 리스트를 생성할 수 있다.
▪ 장점
1. 코드가 간결
2. for문보다 빠름
3. 함수형 프로그래밍 스타일 적용 가능
출처: https://www.freecodecamp.org/news/list-comprehension-in-python/
1) 간단한 리스트 생성
squares = [x**2 for x in range(10)]
# 결과: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 요소강성행렬 생성
K_ele = [beam_stiff(E, I, ele_leng) for _ in range(num_ele)]
# _ 은 변수가 없을 때 사용
2) 조건부 리스트 생성
even_squares = [x**2 for x in range(10) if x % 2 == 0]
# 결과: [0, 4, 16, 36, 64]
3) 2차원 리스트
matrix = [[i*j for j in range(1, 4)] for i in range(1, 4)]
# 결과:
# 결과:
# [[1*1, 2*1, 3*1],
# [1*2, 2*2, 3*2],
# [1*3, 2*3, 3*3]]
[[1, 2, 3],
[2, 4, 6],
[3, 6, 9]]